/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package persistencia.Decoradores;


import entidadesNegocio.Cliente;
import entidadesNegocio.Localidad;
import entidadesNegocio.Zona;
import excepciones.ExpertoClienteExcepcion;
import expertos.ExpertoABMClientes;
import persistencia.Conexion;

/**
 *
 * @author informatica
 */
public class DecoradorABMClientes extends ExpertoABMClientes{



    @Override
    public void guardar(Cliente cliente) throws ExpertoClienteExcepcion {
        try {
            Conexion.getInstancia().iniciarTX();
            super.guardar(cliente);
            Conexion.getInstancia().confirmarTx();
        } catch (ExpertoClienteExcepcion ex) {
            Conexion.getInstancia().deshacerTx();
            throw ex;
        }
    }


    @Override
    public void eliminar(Cliente cliente) throws ExpertoClienteExcepcion {
        try {
            Conexion.getInstancia().iniciarTX();
            super.eliminar(cliente);
            Conexion.getInstancia().confirmarTx();
        } catch (ExpertoClienteExcepcion ex) {
            Conexion.getInstancia().deshacerTx();
            throw ex;
        }
    }

  
    @Override
    public void guardar(Zona zona) throws ExpertoClienteExcepcion {
        try {
            Conexion.getInstancia().iniciarTX();
            super.guardar(zona);
            Conexion.getInstancia().confirmarTx();
        } catch (ExpertoClienteExcepcion ex) {
            Conexion.getInstancia().deshacerTx();
            throw ex;
        }
    }

    @Override
    public void guardarLocalidad(Localidad localidad) throws ExpertoClienteExcepcion {
        try {
            Conexion.getInstancia().iniciarTX();
            super.guardarLocalidad(localidad);
            Conexion.getInstancia().confirmarTx();
        } catch (ExpertoClienteExcepcion ex) {
            Conexion.getInstancia().deshacerTx();
            throw ex;
        }
    }


    

}
